/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.adapaters;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
 *
 * @author Oscar
 */
public class ExportarExcel {

    FileOutputStream fileOut = null;
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet;
    HSSFCellStyle estiloCelda;
//    HSSFFont fuente;

    public void generarDocDesdePlantilla(String nomPlantilla, String nomArchivoGenerado) {
        try {
            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(nomPlantilla));
            wb = new HSSFWorkbook(fs);
            sheet = wb.getSheetAt(0);
            //Generar Estilos Con borde
            estiloCelda = wb.createCellStyle();
            estiloCelda.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            // Tambi�n, podemos establecer bordes...
            estiloCelda.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
            estiloCelda.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
            estiloCelda.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
            estiloCelda.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
            estiloCelda.setBottomBorderColor((short) 8);
            //
            fileOut = new FileOutputStream(nomArchivoGenerado);
        } catch (Exception ex) {
            System.out.print("Error ----" + ex.toString());
        }
    }

    public void addCeldaDouble(int fila, int col, Double val) {
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    public void addCeldaIntegerNegrita(int fila, int col, int val) {
        HSSFRow rowT = sheet.getRow(8);
        estiloCelda = rowT.getCell(8).getCellStyle();
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    public void addCeldaIntegerSinNegrita(int fila, int col, int val) {
        HSSFRow rowT = sheet.getRow(7);
        estiloCelda = rowT.getCell(7).getCellStyle();
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    public void addCeldaInteger(int fila, int col, int val) {
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    public void addCeldaBoolean(int fila, int col, Boolean val) {
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    public void addCeldaCalendar(int fila, int col, Calendar val) {
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    public void addCeldaStringTitulo(int fila, int col, String val) {
        try {
            HSSFRow rowT = sheet.getRow(21);
            estiloCelda = rowT.getCell(3).getCellStyle();
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellValue(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.print("----- error---" + e.toString());
        }
    }

    public void addCeldaStringMotivo(int fila, int col, String val) {
        try {
            HSSFRow rowT = sheet.getRow(22);
            estiloCelda = rowT.getCell(2).getCellStyle();
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellValue(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.print("----- error---" + e.toString());
        }
    }

    public void addCeldaStringMotivoNegrita(int fila, int col, String val) {
        try {
            HSSFRow rowT = sheet.getRow(9);
            estiloCelda = rowT.getCell(9).getCellStyle();
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellValue(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.print("----- error---" + e.toString());
        }
    }

    public void addCeldaStringSala(int fila, int col, String val) {
        try {
            HSSFRow rowT = sheet.getRow(22);
            estiloCelda = rowT.getCell(1).getCellStyle();
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellValue(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.print("----- error ---" + e.toString());
        }
    }

    public void addCeldaStringSalaNegrita(int fila, int col, String val) {
        try {
            HSSFRow rowT = sheet.getRow(6);
            estiloCelda = rowT.getCell(6).getCellStyle();
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellValue(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.print("----- error ---" + e.toString());
        }

    }

    public void addCeldaFormulaNegrita(int fila, int col, String val) {
        try {
            HSSFRow rowT = sheet.getRow(8);
            estiloCelda = rowT.getCell(8).getCellStyle();
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellFormula(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.println("Error formula----" + e.toString());
        }
    }

//    public void eliminarCeldasRepGrafico(){
//        HSSFRow row = sheet.getRow(1);
//            row.getCell(0).
//    }
    public void addCeldaString(int fila, int col, String val) {
        HSSFRow row = sheet.getRow(fila);
        row.createCell(col).setCellValue(val);
        row.getCell(col).setCellStyle(estiloCelda);
    }

    //lizardo estuvo aqui
    public void addBackgroundAmbiente(int fila, int col, String tip) {
        HSSFRow row = sheet.getRow(fila);

        if (tip.equals("#FFFFFF")) {
            //Disponible
            HSSFRow row1 = sheet.getRow(3);
            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
            row.getCell(col).setCellStyle(estil);            
            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
        }
        if (tip.equals("#0000FF")) {
            //Evento
            HSSFRow row1 = sheet.getRow(4);
            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
            row.getCell(col).setCellStyle(estil);
            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.ORANGE.index);
        }
        if (tip.equals("#0000FF")) {
            //Contrato
            HSSFRow row1 = sheet.getRow(5);
            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
            row.getCell(col).setCellStyle(estil);
            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.YELLOW.index);
        }
        if (tip.equals("#00FF00")) {
            //Reunion
            HSSFRow row1 = sheet.getRow(6);
            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
            row.getCell(col).setCellStyle(estil);
            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.TURQUOISE.index);
        }
        if (tip.equals("#E66969")) {
            //Dia no LAborable
            HSSFRow row1 = sheet.getRow(7);
            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
            row.getCell(col).setCellStyle(estil);
            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.RED.index);
        }
    }

//    public void addBackgroundAmbiente(int fila, int col, String tip) {
//        HSSFRow row = sheet.getRow(fila);
//
//        if (tip.equals("#A7FAA4")) {
//            //Disponible
//            HSSFRow row1 = sheet.getRow(3);
//            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
//            row.getCell(col).setCellStyle(estil);
//            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
//        }
//        if (tip.equals("#FEC983")) {
//            //Evento
//            HSSFRow row1 = sheet.getRow(4);
//            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
//            row.getCell(col).setCellStyle(estil);
//            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.ORANGE.index);
//        }
//        if (tip.equals("#FEF851")) {
//            //Contrato
//            HSSFRow row1 = sheet.getRow(5);
//            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
//            row.getCell(col).setCellStyle(estil);
//            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.YELLOW.index);
//        }
//        if (tip.equals("#E6E6E6")) {
//            //Reunion
//            HSSFRow row1 = sheet.getRow(6);
//            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
//            row.getCell(col).setCellStyle(estil);
//            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.TURQUOISE.index);
//        }
//        if (tip.equals("#E66969")) {
//            //Dia no LAborable
//            HSSFRow row1 = sheet.getRow(7);
//            HSSFCellStyle estil = row1.getCell(7).getCellStyle();
//            row.getCell(col).setCellStyle(estil);
//            //row.getCell(col).getCellStyle().setFillBackgroundColor(HSSFColor.RED.index);
//        }
//    }

    public void addCeldaFormula(int fila, int col, String val) {
        try {
            HSSFRow row = sheet.getRow(fila);
            row.createCell(col).setCellFormula(val);
            row.getCell(col).setCellStyle(estiloCelda);
        } catch (Exception e) {
            System.out.println("Error formula----" + e.toString());
        }

    }

    public String getCeldaFormula(int fila, int col) {
        String formu = "";
        try {
            HSSFRow row = sheet.getRow(fila);
            formu = row.getCell(col).getCellFormula();
        } catch (Exception e) {
            System.out.println("Error formula----" + e.toString());
        }
        return formu;
    }

    public HSSFWorkbook cerrarConexion() {
        try {
            wb.write(fileOut);
            fileOut.close();
            System.out.println("cerro");

        } catch (Exception ex) {
            try {
                fileOut.close();
            } catch (IOException ex1) {
            }
        }
        return wb;
    }
}
